Visualización de datos: Registro de primates en Costa Rica
Preparativos
# Carga de paquetes
library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
library(raster)
library(spData)
Carga de datos
# Carga de datos
Primates<-
st_read("https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/primates-cr-registros.csv",
options = c(
"X_POSSIBLE_NAMES=decimalLongitude",
"Y_POSSIBLE_NAMES=decimalLatitude"
),
quiet = TRUE
)
# Asignación del sistema de coordenadas
st_crs(Primates)<-4326
# Capa geoespacial de cantones
cantones <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
quiet = TRUE
)
# Cruce espacial con la tabla de cantones, para obtener el nombre del cantón
Primates <-
Primates %>%
st_join (cantones["canton"])
Tabla de registros de presencia
Primates %>%
st_drop_geometry() %>%
dplyr::select(family, species, stateProvince, canton, eventDate) %>%
datatable(
colnames = c("Familia", "Especies", "Provincia", "Cantón", "Fecha"),
options = list(
searchHighlight = TRUE,
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
)
)
Gráfico pastel de los registros de especies de primates en Costa Rica
Grafi_pie <- data.frame("categorie"=rownames(Primates), Primates)
datos <- Grafi_pie[,c('categorie', 'species', 'individualCount')]
plot_ly(datos, labels = ~species,
values = ~individualCount,
type = 'pie'
)%>%
layout(title ="Registro de especies de primates y su porcentaje",
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
list(pieLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')))
Creación de capas
# Especie de monos ardillas (Saimiri oerstedii)
Mono_ardi<-
Primates%>%
filter(species == "Saimiri oerstedii")
# Especie de monos aulladores (Alouatta palliata)
Mono_aullad<-
Primates%>%
filter(species == "Alouatta palliata")
# Especie de monos capuchinos (Cebus capucinus)
Mono_capuch<-
Primates%>%
filter(species == "Cebus capucinus")
# Especie de monos arañas (Ateles geoffroyi)
Mono_arañ<-
Primates%>%
filter(species == "Ateles geoffroyi")
# Obtención de la capa de altitud
alt<- getData(
"worldclim",
var = "alt",
res = .5,
lon = -84,
lat = 10
)
# Recorte de la capa de altitud
altitud <-crop(alt, extent(-86,-82.3, 8, 11.3))
Colors<- colorNumeric(c("green", "yellow", "pink"),
values(altitud),
na.color = "transparent")
Mapa de distribución de primates
# Mapa de registros de presencia
Primates %>%
dplyr::select(stateProvince,
family,
canton,
species,
basisOfRecord,
scientificName,
eventDate,
decimalLongitude,
decimalLatitude) %>%
leaflet() %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
addRasterImage(
altitud,
colors = Colors,
opacity = 0.5,
group = "altitud")%>%
addCircleMarkers(
data = Mono_aullad,
stroke = F,
radius = 2,
fillColor = "red",
fillOpacity = 0.5,
popup = paste(
Primates$stateProvince,
Primates$family,
Primates$canton,
Primates$species,
Primates$basisOfRecord,
Primates$scientificName,
Primates$eventDate,
Primates$decimalLongitude,
Primates$decimalLatitude,
sep = '<br/>'
),
group = "Mono_aullad"
)%>%
addCircleMarkers(
data = Mono_ardi,
stroke = F,
radius = 2,
fillColor = "orange",
fillOpacity = 0.5,
popup = paste(
Primates$stateProvince,
Primates$family,
Primates$canton,
Primates$species,
Primates$basisOfRecord,
Primates$scientificName,
Primates$eventDate,
Primates$decimalLongitude,
Primates$decimalLatitude,
sep = '<br/>'
),
group = "Mono_ardi"
)%>%
addCircleMarkers(
data = Mono_arañ,
stroke = F,
radius = 2,
fillColor = "blue",
fillOpacity = 0.5,
popup = paste(
Primates$stateProvince,
Primates$family,
Primates$canton,
Primates$species,
Primates$basisOfRecord,
Primates$scientificName,
Primates$eventDate,
Primates$decimalLongitude,
Primates$decimalLatitude,
sep = '<br/>'
),
group = "Mono_arañ"
)%>%
addCircleMarkers(
data = Mono_capuch,
stroke = F,
radius = 2,
fillColor = "black",
fillOpacity = 0.5,
popup = paste(
Primates$stateProvince,
Primates$family,
Primates$canton,
Primates$species,
Primates$basisOfRecord,
Primates$scientificName,
Primates$eventDate,
Primates$decimalLongitude,
Primates$decimalLatitude,
sep = '<br/>'
),
group = "Mono_capuch")%>%
addLayersControl(
baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
overlayGroups = c("altitud", "Mono_aullad", "Mono_ardi", "Mono_arañ", "Mono_capuch")
) %>%
addMiniMap(
tiles = providers$Stamen.OpenStreetMap.Mapnik,
position = "bottomleft",
toggleDisplay = TRUE
)